-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TP2000-1434 Prevent packaging queue race conditions #1267
Merged
dalecannon
merged 11 commits into
master
from
TP2000-1434--packaging-queue-race-condition
Jul 25, 2024
Merged
TP2000-1434 Prevent packaging queue race conditions #1267
dalecannon
merged 11 commits into
master
from
TP2000-1434--packaging-queue-race-condition
Jul 25, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dalecannon
force-pushed
the
TP2000-1434--packaging-queue-race-condition
branch
2 times, most recently
from
July 19, 2024 13:13
b4849a0
to
a110a9d
Compare
…ng the highest queue position
…ating queue positions
dalecannon
force-pushed
the
TP2000-1434--packaging-queue-race-condition
branch
from
July 22, 2024 10:27
a110a9d
to
0a21c10
Compare
mattjamc
reviewed
Jul 23, 2024
paulpepper-trade
approved these changes
Jul 25, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TP2000-1434 Prevent packaging queue race conditions
Why
A race condition can occur during concurrent requests to create/promote/demote/process packaged workbaskets, resulting in duplicate or non-contiguous queue positions that stop the queue from functioning.
What
Uses select_for_update() queryset operation to lock affected packaged workbasket rows while queue position are being updated
nowait=True
), catching the raised exception if a conflicting lock is already acquiredReturns early without updating queue positions if the selected packaged workbasket is no longer a queue member (position=0)
Prevents accidental double-clicking of buttons in the packaging queue
Examples
Shared queue positions after creating packaged workbaskets
Create-packaged-workbasket.mov
Shared queue positions after repositioning packaged workbaskets
Reposition-packaged-workbaskets.mov
Invalid and inconsistent positions and processing states after processing a packaged workbasket while repositioning others
Accept-envelope.mov
Invalid and inconsistent positions and processing states after repositioning a since-removed packaged workbasket
Repositioning-removed-packaged-workbasket.mov